// pages/profile/profile.js
const app = getApp()

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    stats: {
      totalPublish: 0,
      ongoingPublish: 0,
      completedPublish: 0,
      creditScore: 100
    },
    menuItems: [
      {
        icon: '📝',
        title: '我的发布',
        desc: '查看我发布的任务记录',
        path: '/pages/publish-records/publish-records'
      },
      {
        icon: '📋',
        title: '我的申请',
        desc: '查看我申请的任务记录',
        path: '/pages/application-records/application-records'
      },
      {
        icon: '👤',
        title: '个人资料',
        desc: '查看与编辑个人信息',
        path: '/pages/user/settings/settings'
      },
      {
        icon: '❓',
        title: '帮助中心',
        desc: '常见问题、使用指南',
        path: '/pages/help/help'
      },
      {
        icon: '📞',
        title: '联系客服',
        desc: '意见反馈、投诉建议',
        path: '/pages/contact/contact'
      },
      {
        icon: '🚪',
        title: '退出登录',
        desc: '安全退出当前账号',
        action: 'logout'
      }
    ]
  },

  onLoad() {
    // 允许未登录用户访问，显示登录引导
    if (app.utils.checkLoginStatus()) {
      this.loadUserInfo()
      this.loadUserStats()
    }
  },

  onShow() {
    // 如果已登录，加载用户信息
    if (app.utils.checkLoginStatus()) {
      this.loadUserInfo()
      this.loadUserStats()
    }

    // 设置tabBar选中状态
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 4
      })
    }
  },

  // 加载用户信息
  async loadUserInfo() {
    try {
      if (!app.globalData.token) {
        wx.reLaunch({
          url: '/pages/login/login'
        })
        return
      }

      const result = await app.utils.request({
        url: '/auth/user/info',
        method: 'GET'
      })

      if (result.code === 200) {
        this.setData({
          userInfo: result.data,
          hasUserInfo: true
        })
        // 更新全局用户信息
        app.globalData.userInfo = result.data
      }
    } catch (error) {
      console.error('获取用户信息失败:', error)
      if (error.message && error.message.includes('登录已过期')) {
        wx.reLaunch({
          url: '/pages/login/login'
        })
      }
    }
  },

  async loadUserStats() {
    try {
      app.utils.showLoading('加载统计数据...')
      
      const result = await app.utils.request({
        url: '/publish-record/stats',
        method: 'GET'
      })

      if (result.code === 200) {
        const statsData = result.data
        this.setData({
          stats: {
            totalPublish: statsData.totalRecords || 0,
            ongoingPublish: (statsData.totalRecords || 0) - (statsData.completedRecords || 0),
            completedPublish: statsData.completedRecords || 0,
            creditScore: 100 // 信用分暂时固定为100
          }
        })
      } else {
        throw new Error(result.message || '获取统计数据失败')
      }
    } catch (error) {
      console.error('获取统计数据失败:', error)
      app.utils.showError('获取统计数据失败，请重试')
      
      // 失败时设置默认值
      this.setData({
        stats: {
          totalPublish: 0,
          ongoingPublish: 0,
          completedPublish: 0,
          creditScore: 100
        }
      })
    } finally {
      app.utils.hideLoading()
    }
  },

  async getUserInfo(e) {
    console.log('获取用户信息:', e)
    
    if (!e.detail.userInfo) {
      app.utils.showError('获取用户信息失败')
      return
    }

    try {
      app.utils.showLoading('登录中...')
      
      // 1. 获取微信登录凭证
      const code = await app.utils.wechatLogin()
      
      // 2. 调用后端登录接口
      const loginResult = await app.utils.request({
        url: '/auth/wechat/login',
        method: 'POST',
        data: { code }
      })

      // 3. 保存登录信息和sessionKey
      app.utils.saveUserInfo(loginResult.data.student, loginResult.data.token)
      // 保存sessionKey用于后续解密用户信息
      wx.setStorageSync('sessionKey', loginResult.data.sessionKey)
      
      // 4. 更新页面显示
      this.setData({
        userInfo: loginResult.data.student,
        hasUserInfo: true
      })
      
      app.utils.hideLoading()
      app.utils.showSuccess('登录成功')
      
      // 5. 提示用户是否获取头像和昵称
      wx.showModal({
        title: '获取用户信息',
        content: '为了更好的服务体验，是否获取您的微信头像和昵称？',
        success: (res) => {
          if (res.confirm) {
            this.updateUserProfile()
          }
        }
      })
      
    } catch (error) {
      console.error('登录失败:', error)
      app.utils.hideLoading()
      app.utils.showError(error.message || '登录失败，请重试')
    }
  },

  // 更新用户资料
  async updateUserProfile() {
    try {
      app.utils.showLoading('更新用户信息...')
      
      // 获取用户信息
      const userProfile = await app.utils.getUserProfile()
      console.log('获取到用户信息:', userProfile.userInfo)
      console.log('获取到加密数据:', userProfile.encryptedData)
      console.log('获取到初始向量:', userProfile.iv)
      
      // 获取保存的sessionKey
      const sessionKey = wx.getStorageSync('sessionKey')
      if (!sessionKey) {
        throw new Error('sessionKey不存在，请重新登录')
      }
      
      // 调用后端更新用户信息接口
      const updateResult = await app.utils.request({
        url: '/auth/user/update',
        method: 'POST',
        data: {
          encryptedData: userProfile.encryptedData,
          sessionKey: sessionKey,
          iv: userProfile.iv
        }
      })
      
      if (updateResult.code === 200) {
        // 使用后端返回的更新后的用户信息
        app.utils.saveUserInfo(updateResult.data, app.globalData.token)
        
        // 更新页面显示
        this.setData({
          userInfo: updateResult.data,
          hasUserInfo: true
        })
        app.utils.showSuccess('用户信息更新成功')
      }
      
      app.utils.hideLoading()
    } catch (error) {
      console.error('更新用户信息失败:', error)
      app.utils.hideLoading()
      app.utils.showError('更新用户信息失败')
    }
  },

  navigateToPage(e) {
    const path = e.currentTarget.dataset.path
    const action = e.currentTarget.dataset.action
    
    // 检查登录状态
    if (!app.utils.checkLoginStatus()) {
      wx.showModal({
        title: '需要登录',
        content: '使用该功能需要登录，是否前往登录？',
        confirmText: '去登录',
        cancelText: '继续浏览',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login'
            })
          }
        }
      })
      return
    }
    
    if (action === 'logout') {
      this.logout()
    } else if (path) {
      wx.navigateTo({
        url: path,
        fail: () => {
          wx.showToast({
            title: '页面开发中',
            icon: 'none'
          })
        }
      })
    }
  },

  // 登出功能
  async logout() {
    wx.showModal({
      title: '退出登录',
      content: '确定要退出当前账号吗？',
      success: async (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '退出中...' })
          
          try {
            // 调用app中的登出方法
            const success = await app.utils.logout()
            
            wx.hideLoading()
            
            if (success) {
              wx.showToast({
                title: '已退出登录',
                icon: 'success',
                success: () => {
                  setTimeout(() => {
                    wx.reLaunch({
                      url: '/pages/login/login'
                    })
                  }, 1500)
                }
              })
            } else {
              wx.showToast({
                title: '退出失败，请重试',
                icon: 'none'
              })
            }
          } catch (error) {
            wx.hideLoading()
            console.error('登出失败:', error)
            wx.showToast({
              title: '退出失败，请重试',
              icon: 'none'
            })
          }
        }
      }
    })
  },

  onShare() {
    return {
      title: '校园帮手 - 让校园生活更便利',
      path: '/pages/index/index'
    }
  }
})